const express = require('express');
// session控制
const session = require('express-session');
// 路径操作模块
const path = require('path');
// 请求参数解析模块
const bodyParser = require('body-parser');
// express-art-template基于art-template, 所以安装express-art-template后不需要npm install art-template
const template = require('art-template');
// 日期格式化模块
const dateFormat = require('dateformat');

// 连接数据库
require('./model/connect');

const app = express();

// 配合session加密秘钥 secret key
app.use(session({secret: 'secret key'}));
// 设置post请求解析器 false使用系统模块querystring解析
app.use(bodyParser.urlencoded({extended:false}));
// 设置模板所在位置
app.set('views', path.join(__dirname, 'views'));
// 设置模板默认后缀
app.set('view engine', 'art');
// 设置art后缀模板的渲染引擎
app.engine('art', require('express-art-template'));
// 向模板内倒入dateFormat变量
template.defaults.imports.dateFormat = dateFormat;


app.use('/static', express.static(path.join(__dirname, 'public')));

// 登录状态检查中间键
app.use('/admin', require('./middleware/loginGuard'));


const home = require('./router/home');
const admin = require('./router/admin');
app.use('/home', home);
app.use('/admin', admin);


app.use((err, req, res, next) => {
    console.log("err", err);
    const result = JSON.parse(err);

    let query = [];
    for(let attr in result){
        if(attr != 'path'){
            query.push(attr + "=" + result[attr]);
        }
    }
    res.redirect(`${result.path}?${query.join('&')}`);
})

app.listen(80);
console.log("Listenning port on 80……");